package com.smday.sort;

import java.util.Arrays;

/**
 * @author Summerday
 */
public class SelectSort {

    public static void main(String[] args) {
        int[] arr = {101, 34, 119, 1};

        selectSortV(arr);
    }


    private static void selectSortV(int[] arr) {
        System.out.printf("排序前: %s\n",Arrays.toString(arr));
        for (int i = 0; i < arr.length - 1; i++) {
            int minIndex = i;
            int min = arr[i];
            for (int j = i + 1; j < arr.length; j++) {

                if (arr[j] < arr[minIndex]) {
                    //重置最小位置值为arr[i]
                    min = arr[j];
                    //重置最小位置为i
                    minIndex = j;
                }
            }
            if (minIndex != i) {
                //交换,将最小值放到arr[i],交换
                arr[minIndex] = arr[i];
                arr[i] = min;
            }


            System.out.printf("第%d轮后: %s\n", i + 1, Arrays.toString(arr));

        }


    }


    public static void selectSort(int[] arr) {


        //逐步推导  101 , 34 , 119 ,1

        //第一轮: 1, 34 ,119 ,101

        int minIndex = 0;
        int min = arr[0];
        for (int i = 0 + 1; i < arr.length; i++) {

            if (arr[i] < arr[minIndex]) {
                //重置最小位置值为arr[i]
                min = arr[i];
                //重置最小位置为i
                minIndex = i;
            }
        }
        if (minIndex != 0) {
            //交换,将最小值放到arr[0],交换
            arr[minIndex] = arr[0];
            arr[0] = min;
        }


        System.out.printf("第一轮后: %s\n", Arrays.toString(arr));

        //第二轮: 1, 34 ,119 ,101

        minIndex = 1;
        min = arr[1];
        for (int i = 1 + 1; i < arr.length; i++) {

            if (arr[i] < arr[minIndex]) {
                //重置最小位置值为arr[i]
                min = arr[i];
                //重置最小位置为i
                minIndex = i;
            }
        }
        if (minIndex != 1) {
            //交换,将最小值放到arr[0],交换
            arr[minIndex] = arr[1];
            arr[1] = min;
        }


        System.out.printf("第二轮后: %s\n", Arrays.toString(arr));

        //第二轮: 1, 34 ,101 ,119

        minIndex = 2;
        min = arr[2];
        for (int i = 2 + 1; i < arr.length; i++) {

            if (arr[i] < arr[minIndex]) {
                //重置最小位置值为arr[i]
                min = arr[i];
                //重置最小位置为i
                minIndex = i;
            }
        }
        if (minIndex != 2) {
            //交换,将最小值放到arr[0],交换
            arr[minIndex] = arr[2];
            arr[2] = min;
        }


        System.out.printf("第三轮后: %s\n", Arrays.toString(arr));


    }


}
